package com.knowif.util.commonUtil;

/**
 * 对象工具类
 * @author xingyao
 * @time 2017年3月31日 上午10:36:09
 * @describe
 */
public class ObjectUtil {
	
	
	/**
	 * 判断一个对象是否是数组
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isArray(Object obj){
		if(obj == null){
			return false;
		}
		return obj.getClass().isArray();
	}
	
	
	/**
	 * 判断一个对象是否是String
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isString(Object obj){
		if(obj == null){
			return false;
		}
		if("String".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	/**
	 * 判断是否为int类型
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isInt(Object obj){
		if(obj == null){
			return false;
		}
		if("Integer".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	/**
	 * 判断是否为list集合
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isList(Object obj){
		if(obj == null){
			return false;
		}
		if("ArrayList".equals(obj.getClass().getSimpleName())){
			return true;
		}
		if("LinkedList".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	/**
	 * 判断obj是否是set集合
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isSet(Object obj){
		if(obj == null){
			return false;
		}
		if("HashSet".equals(obj.getClass().getSimpleName())){
			return true;
		}
		if("TreeSet".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	/**
	 * 判断一个对象是否是boolean类型
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isBoolean(Object obj){
		if(obj == null){
			return false;
		}
		if("Boolean".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	/**
	 * 判断是否是char类型
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isChar(Object obj){
		if(obj == null){
			return false;
		}
		if("Char".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	/**
	 * 判断对象是否是一个map集合
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isMap(Object obj){
		if(obj == null){
			return false;
		}
		if("Map".equals(obj.getClass().getSimpleName())){
			return true;
		}
		if("HashMap".equals(obj.getClass().getSimpleName())){
			return true;
		}
		if("TreeMap".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	
	/**
	 * 判断一个对象是否是float类型
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isFloat(Object obj){
		if(obj == null){
			return false;
		}
		if("Float".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	/**
	 * 判断是否是double类型
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isDouble(Object obj){
		if(obj == null){
			return false;
		}
		if("Double".equals(obj.getClass().getSimpleName())){
			return true;
		}
		return false;
	}
	
	
	/**
	 * 判断是否是自己定义的类型
	 * @author xingyao
	 * @date 2017年3月31日
	 * @describe
	 * @param obj
	 * @return
	 */
	public static boolean isNotJavaType(Object obj){
		if(obj == null){
			return false;
		}
		if(isArray(obj) || isBoolean(obj) || isChar(obj) || isDouble(obj) || isFloat(obj) || isInt(obj) || isMap(obj) ||
				isSet(obj) || isString(obj)){
			return false;
		}
		return true;
	}
}
